package com.um.springboot.starter.event;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import lombok.*;

import java.io.Serializable;

/**
 * Redis分布式事件包装
 *
 * @author 甘天伟
 * @since 2024/5/7
 * 版权所有 广州优匠科技有限公司
 */
@Data
@NoArgsConstructor
public class RedisEventItem implements Serializable {
    private String className;
    private String json;

    public RedisEventItem(@NonNull RedisEvent event) {
        this.className = event.getClass().getName();
        this.json = JSON.toJSONString(event);
    }

    @SneakyThrows
    public RedisEvent toEvent() {
        if (!StrUtil.isAllNotBlank(className, json)) {
            return null;
        }
        return JSON.<RedisEvent>parseObject(this.getJson(), Class.forName(this.className));
    }
}
